﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DblogStudio.BLL;
using DblogStudio.DAL.Models;
using DblogStudio.GUI.Common;
using DblogStudio.GUI.Utils;
using DblogStudio.Utils;
namespace DblogStudio.GUI.HeThong
{
    public partial class FormQuanLyNguoiDung_Detail : BaseDialog
    {
        AppUser nguoiSuDung = null;
        int entityToBeAdded = 0;
        public event Common.TListChangedEventHandler OnChanged;
        public FormQuanLyNguoiDung_Detail(AppUser nsd = null)
        {
            InitializeComponent();
            this.nguoiSuDung = nsd;
            InitInterface();
        }

        void InitInterface()
        {
            cmbVaiTro.SelectedIndex = 0;
            if (nguoiSuDung != null)
            {
                txtTenDangNhap.Text = nguoiSuDung.UserName;
                txtTenDangNhap.Enabled = false;
                txtHoTen.Text = nguoiSuDung.FullName;
                txtMatKhau.Text = nguoiSuDung.Password;
                txtMatKhau.Enabled = true;
                cmbVaiTro.SelectedIndex = nguoiSuDung.Role;
                this.Text = string.Format(TITLE_FORM_DETAIL.EDIT, ENTITY_NAME.APPUSER);
                chkTiepTucBoSung.Enabled = chkTiepTucBoSung.Visible = chkTiepTucBoSung.Checked = false;
            }
            else
            {
                txtTenDangNhap.Text = "";
                txtTenDangNhap.Enabled = true;
                txtHoTen.Text = "";
                txtMatKhau.Text = "";
                txtMatKhau.Enabled = true;
                cmbVaiTro.SelectedIndex = 0;
                chkTiepTucBoSung.Enabled = chkTiepTucBoSung.Visible = chkTiepTucBoSung.Checked = true;
                this.Text = string.Format(TITLE_FORM_DETAIL.ADDNEW, ENTITY_NAME.APPUSER);
            }
            txtTenDangNhap.Focus();
        }

        bool ValiDateData()
        {
            if (txtTenDangNhap.Text.IsNullOrEmpty())
            {
                errorNotify.Clear();
                errorNotify.SetError(txtTenDangNhap, "Bạn chưa nhập tên đăng nhập");
                txtTenDangNhap.Focus();
                return false;
            }
            if (txtHoTen.Text.IsNullOrEmpty())
            {
                errorNotify.Clear();
                errorNotify.SetError(txtHoTen, "Bạn chưa nhập họ tên");
                txtHoTen.Focus();
                return false;
            }
            if (txtMatKhau.Text.IsNullOrEmpty())
            {
                errorNotify.Clear();
                errorNotify.SetError(txtMatKhau, "Bạn chưa nhập mật khẩu khởi tạo");
                txtMatKhau.Focus();
                return false;
            }
            if (cmbVaiTro.SelectedIndex == -1)
            {
                errorNotify.Clear();
                errorNotify.SetError(cmbVaiTro, "Bạn chưa chọn vai trò hoặc vai trò bạn nhập không đúng");
                cmbVaiTro.Focus();
                return false;
            }
            return true;
        }

        private void bntDongY_Click(object sender, EventArgs e)
        {
            if (ValiDateData())
            {
                if (nguoiSuDung != null)
                {
                    //Cập nhật
                    nguoiSuDung.FullName = txtHoTen.Text;
                    nguoiSuDung.Role = (int)cmbVaiTro.SelectedIndex;
                    if (BLL.HeThong.Update(nguoiSuDung) == BLL.CODE_RESULT_RETURN.ThatBai)
                        DialogUtils.ShowError("Đã có lỗi xảy ra trong quá trình cập nhật");
                    else
                        DialogResult = System.Windows.Forms.DialogResult.OK;
                }
                else
                {
                    //Thêm mới
                    nguoiSuDung = new AppUser();
                    nguoiSuDung.UserName = txtTenDangNhap.Text;
                    nguoiSuDung.FullName = txtHoTen.Text;
                    nguoiSuDung.Password = txtMatKhau.Text;
                    nguoiSuDung.Role = (int)cmbVaiTro.SelectedIndex;
                    nguoiSuDung.IsActive = true;
                    var rs = BLL.HeThong.Add(nguoiSuDung);
                    nguoiSuDung = null;
                    if (rs == BLL.CODE_RESULT_RETURN.ThanhCong)
                    {
                        entityToBeAdded++;
                        OnChanged(this, null);
                        if (chkTiepTucBoSung.Checked)
                        {
                            InitInterface();
                        }
                        else
                            DialogResult = System.Windows.Forms.DialogResult.OK;
                    }
                    else
                        errorNotify.SetError(txtTenDangNhap, "Tên đăng nhập này đã tồn tại");
                }
            }
        }

        private void OnEnter(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
                bntDongY.PerformClick();
        }

        private void FormQuanLyNguoiDung_Detail_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (entityToBeAdded > 0)
                DialogResult = System.Windows.Forms.DialogResult.OK;
        }
    }
}
